package com.yunxi.module.system.service.tenant;

import com.yunxi.framework.common.pojo.PageResult;
import com.yunxi.module.system.model.tenant.TenantPackageDO;
import com.yunxi.module.system.vo.admin.tenant.packages.TenantPackagePageReqVO;
import com.yunxi.module.system.vo.admin.tenant.packages.TenantPackageSaveReqVO;

import java.util.List;

/**
 * <p>
 * 租户套餐 Service 接口
 * </p>
 *
 * @author lidy
 * @since 2024-05-08
 */
public interface TenantPackageService {

    /**
     * 获得租户套餐
     *
     * @param packageId 套餐编号
     * @return 套餐信息
     */
    TenantPackageDO getTenantPackage(Long packageId);

    /**
     * 校验租户套餐
     *
     * @param packageId 租户套餐编号
     * @return 租户套餐信息
     */
    TenantPackageDO validateTenantPackage(Long packageId);

    /**
     * 获得租户套餐分页列表
     *
     * @param reqVO 条件
     * @return 租户套餐分页列表
     */
    PageResult<TenantPackageDO> getTenantPackagePage(TenantPackagePageReqVO reqVO);

    /**
     * 创建租户套餐
     *
     * @param createReqVO 租户套餐信息
     * @return 套餐编号
     */
    Long createTenantPackage(TenantPackageSaveReqVO createReqVO);

    /**
     * 更新租户套餐
     *
     * @param updateReqVO 租户套餐信息
     */
    void updateTenantPackage(TenantPackageSaveReqVO updateReqVO);

    /**
     * 删除租户套餐
     *
     * @param tenantId 租户套餐编号
     */
    void deleteTenantPackage(Long tenantId);

    /**
     * 获得租户套餐精简信息列表
     *
     * @param status 状态
     * @return 租户套餐精简信息列表
     */
    List<TenantPackageDO> getTenantPackageListByStatus(Integer status);
}
